//
// Created by dddgzc on 2025/1/23.
//

#ifndef GAMESCENE_H
#define GAMESCENE_H
#include "Bullet.h"
#include "Platform.h"
#include "Scene.h"
#include "StatusBar.h"

extern bool IS_DEBUG_MODE;
extern std::vector<Platform*> platforms;
extern std::vector<Bullet*> bullets;
extern SDL_Texture* sky;
extern SDL_Texture* hills;
extern SDL_Texture* winnerBar;
extern SDL_Texture* player1pWinner;
extern SDL_Texture* player2pWinner;
extern Camera camera;

extern SDL_Texture* player01Avatar;
extern SDL_Texture* player02Avatar;

class GameScene : public Scene {

public:
    GameScene() = default;
    ~GameScene() = default;

    // 场景进入时
    void onEnter() override;
    // 渲染时
    void onDraw(const Camera& camera) override;
    // 数据更新
    void onUpdate(int delta) override;
    // 按键输入
    void onInput(const SDL_Event &e) override;
    // 场景退出时
    void onExit() override;
private:
    // 玩家状态栏相关
    StatusBar statusBarPlayer01;
    StatusBar statusBarPlayer02;

    // 游戏结束相关
    bool isGameOver = false; // 游戏是否结束标志
    SDL_Point winnerBarPos; // 游戏获胜提示栏位置
    SDL_Point winnerBarPosDst; // 游戏获胜提示栏的目标位置
    SDL_Point winnerBarTextPos; // 游戏获胜提示玩家文字位置
    SDL_Point winnerBarTextPosDst; // 游戏获胜提示玩家文字的目标位置
    const float winnerBarSpeed = 3.0f; // 游戏获胜提示栏移入速度
    const float winnerBarTextSpeed = 1.5f; // 游戏获胜提示栏文字移入速度
    MyTimer winnerBarSolidInTimer; // 移入定时器
    MyTimer winnerBarSolidOutTimer; // 移出定时器
    bool isSolidOutStarted = false; // 是否开始移出
};



#endif //GAMESCENE_H
